# # -*- encoding:utf-8 -*-
# # @time:2023-01-29 22:26
# # @Author : serein
# # @Email: serein@qq.com
# # @File:ronglianyun.py
# # @Software: PyCharm
import json
#
from ronglian_sms_sdk import SmsSDK
#
# #这个是容联云自带的一个方法 但是这种办法，每一个用户使用都会创建一个新的类试图很占用空间
# # def send_message():
# #     sdk = SmsSDK(accId, accToken, appId)
# #     tid = '1'#'容联云通讯创建的模板ID'
# #     mobile = '19120355353'
# #     datas = ('12345', '2')#第一个参数是验证码，第二个参数是有效时间分钟计
# #     resp = sdk.sendMessage(tid, mobile, datas)
# #     print(resp)
#
# #下面是重写的短信发送办法，采用单例模式
# #单例模式：通过重写new来实现，使得实例指向同一个地址，为同一个实例
from config.ronglianyun.ronglianyun_dev import accId,appId,accToken
#

class Message:
    def __new__(cls, *args, **kwargs):
        #如果是第一次创建对象，应该返回创建成功之后的对象，如果是第二次创建对象，应该返回上一次创建的对象
        if not hasattr(cls,'_instance'):#hasattr(cls,'_instance')是判断这个方法和对象存不存在
            #_加上私有属性的意思，即在类视图局部的数据
            cls._instance = super().__new__(cls, *args, **kwargs)#调用父类的new方法
            cls._instance.sdk = SmsSDK(accId,accToken,appId)
        return cls._instance

    def send_message(self, tid, mobile, datas):
        # SmsSDK 对象 相当于第三方短信平台进行通信
        # 单例模式 正常情况下，一个类可以创建无数个对象，单例模式，在某些场景下，只需要创建一个对象就好了
        sdk = self.sdk
        resp = sdk.sendMessage(tid, mobile, datas)
        # 转json数据
        resp = json.loads(resp)
        if resp['statusCode'] == '000000':
            return 0
        else:
            return 1
if __name__ == '__main__':
    # send_message()
    m = Message()
    m.send_message('1','19120355353',('1234','2'))
